Digdagのスケジューリングについて理解する #digdag
Digdagを理解してみるシリーズ、3本目は『スケジューリング』です。
スケジュール設定
ワークフローを定期的に実行させるために、schedule: オプションをワークフローのTOPレベルに定義する事が出来ます。
timezone: UTC schedule: daily>: 07:00:00 +step1: sh>: tasks/shell_sample.sh
schedule:ディレクティブでは、以下オプションの中から1つを選択可能です。
- daily>: HH:MM:SS (daily>: 07:00:00)
- hourly>: MM:SS (hourly>: 30:00)
- weekly>: DDD,HH:MM:SS (weekly>: Sun,09:00:00)
- monthly>: D,HH:MM:SS (monthly>: 1,09:00:00)
- minutes_interval>: M (minutes_interval>: 30)
- cron>: CRON (cron>: 42 4 1 * *)
digdag checkコマンドを使うと、次にいつそのタスクが実行されるかが分かります。
$ ./digdag check ... Schedules (1 entries): daily_job: daily>: "07:00:00" first session time: 2016-02-10 16:00:00 -0800 first runs at: 2016-02-10 23:00:00 -0800 (11h 16m 32s later)
スケジューラ起動
digdag schedulerコマンドを使うとスケジュール起動させる事が出来ます。
$ ./digdag scheduler
ワークフロー定義を変更すると、スケジューラは自動的にdigdag.digファイルを再度読み込むので再起動する必要はありません。
スケジューリングステータスを確認
Client-mode commandsを利用してスケジュールの管理を行う事が出来ます。
スケジューラーコマンドはデフォルトではhttp://127.0.0.1:65432でのみ受け付けています。接続はhttp://127.0.0.1 (localhot)からのみ受け付けています。これはセキュリティ上の理由によるものです。この部分の変更を行う場合は--bind ADDRESSオプションを使用します。
処理が期待する時間内に終わらなかった場合のアラート設定
以下の様な形で設定を行う事で可能となります。
timezone: UTC schedule: daily>: 07:00:00 sla: # triggers this task at 02:00 time: 02:00 +notice: sh>: notice.sh +long_running_job: sh>: long_running_job.sh
まとめ
という訳で、Digdagのスケジューリングに関する内容のご紹介でした。ジョブ管理の肝となる機能である『スケジューラ』機能、Digdagも様々な設定方法が選べる様ですが、そもそもサーバー起動はどうするんだろう?設定の追加は?設定した内容が一覧で見れたりするのかな?という部分が疑問として沸き上がって来ました。今後のエントリではその辺りについても調査・言及して行ければと思っております。こちらからは以上です。